1. Field
The disclosure relates generally to data processing and more specifically to empowering a computer kernel to make its own decisions in regard to tracing and tuning.
2. Description of the Related Art
Computer performance can be enhanced in a number of ways. One way in which computer performance can be enhanced is by optimizing the performance of input/output (I/O) operations. In a computing environment, input/output refers to communication between a computer and an external environment or another computer. Inputs are the signals received by the computer and the outputs are the signals sent by the computer. Performing I/O means to perform an input or an output operation. For example, a keyboard and a mouse are examples of input devices and a monitor or printer are examples of output devices. Modems or network cards, used for communication between computers are examples of both input devices and output devices.
In order to enhance computer performance by input/output optimization, a trace is run to analyze the input/output operation and find where inefficient time is being spent. For example, if one input/output device is creating a bottleneck for signals from the central processing unit and memory, action can be taken to prevent the bottleneck such as changing the input/output device. Typically, the long latency is detected by a user who then initiates a trace by manually running a trace command. Normally, these traces are captured while an application is running, and the captured trace identifies where the undesirable latency is occurring without difficulty. However, running a trace can be difficult when a problem causing unwanted latencies is intermittent.
A problem causing an unwanted latency is difficult to detect using a trace because the user has to predict when the problem will occur in order to manually start the trace. Such prediction is not always possible. Moreover, when the workload is unfamiliar, such as in a customer production environment, such prediction is even more difficult. The difficulty of predicting when an intermittent problem will occur in order to manually start a trace may be solved by running a continuous trace. But running a continuous trace is not practical because the I/O traces are detailed and create very large amounts of data in only a few seconds. Running a continuous trace is not practical because such a trace consumes many central processing unit cycles which degrades the performance of all applications running on the computer system. Moreover, the continuous trace creates huge output files that may fill trace buffers long before the intermittent latency problem may be solved. Finally, saving the input/output trace buffers because one of them may have captured an intermittent problem is not feasible because the trace logs must be stored which impacts the overall system resources.
Accordingly, it would be advantageous to have a method, system, and program product which take into account one or more of the issues discussed above, as well as possibly other issues.